Python 特定queryset django的外键
是否有方法引用Python 特定queryset django的外键,python,django,Python,Django,是否有方法引用模型的特定对象?假设我有如下一些模型: # models.py class VehicleCategoryCode(models.Model): category = models.CharField(max_length=5) name = models.CharField(max_length=20) class Code(models.Model): category = models.ForeignKey(VehicleCategoryCode,
模型的特定对象
?假设我有如下一些模型:
# models.py
class VehicleCategoryCode(models.Model):
category = models.CharField(max_length=5)
name = models.CharField(max_length=20)
class Code(models.Model):
category = models.ForeignKey(VehicleCategoryCode, on_delete=models.CASCADE)
index = models.CharField(max_length=4, blank=True)
label = models.CharField(max_length=50)
order = models.CharField(max_length=20, blank=True)
is_active = models.BooleanField(default=True)
# pay attention to the Model
class Vehicle(models.Model):
label = models.CharField(max_length=80)
model = models.CharField(max_length=30)
目前,车辆
未链接到任何车型
现在代码模型是VehicleCategoryCode
的外键,它有两个对象。在VehicleCategoryCode中,第一个对象标签(为了方便起见)将由Vehicle.label引用,第二个对象模型(为了方便起见)将由Vehicle.model引用。因此,车辆中的每个字段都可以引用相同的模型,但对象不同
所以基本上我想知道下面的伪代码是否可以实现
class Vehicle(models.Model):
label = models.ForeignKey(VehicleCategoryCode__name='label', on_delete=models.CASCADE)
model = models.ForeignKey(VehicleCategoryCOde__name='model', on_delete=models.CASCADE)
如有任何建议,将不胜感激。谢谢。您可以使用:
车辆(型号.型号):
label=models.ForeignKey(
代码,
将选项限制为={'category\'u name':'label'},
on_delete=models.CASCADE
)
model=models.ForeignKey(
代码,
将选项限制为={'category\'u name':'model'},
on_delete=models.CASCADE
)
对于
ModelForm
s和ModelAdmin
中,它将限制选择,但是请注意,tese不是由数据库强制执行的。谢谢您的回答。然而,在处理数据库时,我遇到了一个问题。为每个模型制作一个单独的模型是唯一的解决方法吗?@harryghgim:通常每个模型只制作一个表,每个ManyToManyField
只制作一个表,仅此而已。limit\u choices\u to
甚至与数据库没有任何关系。
Vehicle(models.Model):
label = models.ForeignKey(
Code,
limit_choices_to={'category__name': 'label'},
on_delete=models.CASCADE
)
model = models.ForeignKey(
Code,
limit_choices_to={'category__name': 'model'},
on_delete=models.CASCADE
)