Skip to main content
 首页 » 编程设计

python之Django 中的默认外键值

2025年05月04日35arxive

我知道这个问题已被问过无数次,但似乎没有一个解决方案符合我的需求。我正在尝试从另一个应用程序中的外键动态设置外键的默认值。 继承人模型包括获取默认值的功能。这段代码没有错误,它确实在下拉列表中放置了一个值(没有'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 

希望这对遇到类似问题的其他人有所帮助,如果有人发现此代码有任何问题,请随时纠正我。