簡體   English   中英

特定查詢集 django 的 ForeignKey

[英]ForeignKey to specific queryset django

有沒有辦法參考 Model 的特定Model 假設我有一些如下模型:

# 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)

目前Vehicle未鏈接到任何 model。

現在 Code model 是VehicleCategoryCode的 ForeignKey ,它有兩個對象。 In the VehicleCategoryCode the first object label (for convenience sake) will be referenced by Vehicle.label, and the second object model (once again for convenience) will be referenced by Vehicle.model. 因此 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)

任何建議或意見將不勝感激。 謝謝你。

您可以使用limit_choices_to=…參數 [Django-doc]

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
    )

對於ModelForm和在ModelAdmin中,它將限制選擇,但請注意,數據庫不會強制執行這些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM