[英]Add a conditional foreign key field in a DJANGO model
Models.py如下所示。 Release表有一个指向SystemRequirement表的外键system_requirements_id ,但我希望只有当 Release表中的system_requirements字段中没有文本时 ,用户才应填写system_requirements_id 。 否则, system_requirements_id可以留空。 我该如何实现?
class SystemRequirement(TimeStampedModel):
code_name = models.TextField(blank=True)
content = models.TextField()
creation_date = models.DateField(auto_now=False, auto_now_add=True)
def __unicode__(self):
return self.code_name
class Release(TimeStampedModel):
system_requirements = models.TextField(blank=True)
system_requirements_id = models.ForeignKey(SystemRequirement,
blank=True, null=True)
我的建议是: -
Models.py -
class Release(TimeStampedModel):
system_requirements_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
system_requirements = models.TextField(blank=True)
class SystemRequirement(TimeStampedModel):
system_requirements_id = models.ForeignKey(Release)
code_name = models.TextField(blank=True)
content = models.TextField()
creation_date = models.DateField(auto_now=False, auto_now_add=True)
def __unicode__(self):
return self.code_name
views.py-(查询)
#check system_requirements text in Release table
try:
SystemRequirement = Release.objects.get(system_requirements='MatchingText')
#If got matching result means text exist so don't do anything
except ObjectDoesNotExist: #No matching query
Release.objects.filter(system_requirements='MatchingText').update(system_requirements_id='SomeId')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.