您可以进行更改并使用ChoiceField
?
BAR_VERSIONS = (
('Bar 1', 'bar1'),
('Bar 2', 'bar2'),
('Bar 3', 'bar3'),
)
class Bar(models.Model):
baz = models.CharField()
class Foo(models.Model):
bar = models.ForeignKey(Bar)
bar_version = models.ChoiceField(choices=BAR_VERSIONS)
然后:
try:
foo_instance = Foo.objects.get(bar=bar_instance)
except Foo.DoesNotExist:
# Handle Exception
pass
else:
print(foo_instance.bar_version)
更新:
根据您的评论,由于想法是设置 none 或 all bar
s ,您仍然可以使用这种方法,但使用ManyToManyField
带有through
参数的 a 。bar4
如果您想添加-barn
而不是扩展您的 try-except 瀑布,这将使它在未来变得更好和可扩展。
https://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany
class Bar(models.Model):
baz = models.CharField()
class Foo(models.Model):
bars = models.ManyToManyField(bar, through='FooBars')
class FooBars(models.Model):
foor = models.ForeignKey(Foo)
bar = models.ForeignKey(Bar)
bar_version = models.ChoiceField(choices=BAR_VERSIONS)