Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 特定queryset django的外键_Python_Django - Fatal编程技术网

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
    )