我知道这个问题已被问过无数次,但似乎没有一个解决方案符合我的需求。我正在尝试从另一个应用程序中的外键动态设置外键的默认值。 继承人模型包括获取默认值的功能。这段代码没有错误,它确实在下拉列表中放置了一个值(没有'default = ...'模板中的下拉列表只显示'---'作为初始/默认值),它只是错误的值。它使用“RevisionSettings”表中的第一个条目并且不会更改。
代码
models.py(计算应用程序)
from django.db import models
from settings.models import RevisionDefaultType, RevisionSettings
def get_default_rev():
queryset = RevisionDefaultType.objects.values_list('defaultrevisiontype', flat = True)
return queryset
class PstCalc(models.Model):
revision_type = models.ForeignKey(RevisionSettings, default = get_default_rev)
models.py(设置应用程序)
from django.db import models
class RevisionSettings(models.Model):
global_revision_type = models.CharField(max_length = 5, unique=True, blank = True)
global_revision_description = models.CharField(max_length = 300, unique=True, blank = True)
class Meta:
ordering = ["global_revision_type"]
def __unicode__(self): # Python 3: def __str__(self):
return self.global_revision_type
class RevisionDefaultType(models.Model):
defaultrevisiontype = models.ForeignKey(RevisionSettings)
class Meta:
ordering = ["defaultrevisiontype"]
def __unicode__(self): # Python 3: def __str__(self):
return unicode(self.defaultrevisiontype)
请您参考如下方法:
找到解决方案。它所需要的只是在这个网站上发现的一个小调整: http://south.aeracode.org/ticket/250
函数
def get_default_rev():
queryset = RevisionDefaultType.objects.values_list('defaultrevisiontype', flat = True)
for query in queryset:
return query
希望这对遇到类似问题的其他人有所帮助,如果有人发现此代码有任何问题,请随时纠正我。
