我在django那里遇到了这个奇怪的问题
我有3个模型Books, Language, Book_language
,其中我将图书映射到其语言。
来自django.db导入模型
class Book(models.Model):
title = models.CharField(max_length=200)
year = models.IntegerField()
class Language(models.Model):
name = models.CharField(max_length=50)
class Book_language(models.Model):
book = models.ForeignKey(Book)
language = models.ForeignKey(Language)
other_title = models.CharField(max_length=200, default=Book._meta.get_field('title').get_default()) # not working
到目前为止,我正在创建一本书和标题,后来用语言进行分配,所以所有语言的标题都相同,后来我明白标题在所有语言中可能都不一样,所以我想要other_title
如果不提及(title
)则默认为but not working
,当我使用语言进行地图制作时,会显示在django admin 中。
答案 0 :(得分:0)
你可以简单地覆盖save
方法吗?
class Book_language(models.Model):
book = models.ForeignKey(Book)
language = models.ForeignKey(Language)
other_title = models.CharField(max_length=200)
def save(self, *args, **kwargs):
if not self.other_title:
self.other_title = self.book.title
super(Book_language, self).save(*args, **kwargs)
对于updating-multiple-objects-at-once以前的空数据,您可以使用expressions F:
from django.db.models import Q, F
empty_f = Q(other_title__isnull=True) | Q(other_title__exact='')
for bl in Book_language.objects.filter(empty_f):
bl.other_title = bl.book.title
bl.save()