如何在django中使用更多外键

如何在django中使用更多外键,django,Django,我想更好地了解ForeignKey在django的工作原理,如何使用barcode引用field1和field2引用job class User(AuditModel): barcode = models.CharField(max_length=10, unique=True, default="not_specified", null=True, blank=True) name = models.CharField(max_length=100, uni

我想更好地了解ForeignKey在django的工作原理,如何使用
barcode
引用
field1
field2
引用
job

class User(AuditModel):
    barcode = models.CharField(max_length=10, unique=True, default="not_specified", null=True, blank=True)
    name = models.CharField(max_length=100, unique=True, null=False, blank=False)
    surname = models.CharField(max_length=100,  null=False, blank=False)
    job = models.CharField(max_length=100,  null=False, blank=False)
        
    def __str__(self):
        return str(self.barcode)

class Test_table
    field1 = models.ForeignKey(User,  blank=False, null=False, on_delete=models.CASCADE, related_name="fields1")
    field2 = models.ForeignKey(User, max_length=100, unique=True, blank=True, null=True, on_delete=models.CASCADE, related_name="fields2") 

谢谢

您可以使用
to_字段
参数

比如:


但请尽量只使用其中一个。数据复制从来都不是一个好主意。

请不要这样做。您正在引入数据复制。结果是很难保持字段同步。如果以后用户更改了条形码/作业,则会导致大量额外的逻辑来保持
字段1
字段2
同步。
field1 = models.ForeignKey(User,  blank=False, null=False, on_delete=models.CASCADE, related_name="fields1", to_field="barcode")
field2 = models.ForeignKey(User, max_length=100, unique=True, blank=True, null=True, on_delete=models.CASCADE, related_name="fields2", to_field="job")