如何使用 Django ForeignKey link 将一个模型的列添加到另一个模型中

How can I link the column of a model to another using Django ForeignKey

我有以下型号

class Supplier(models.Model):
    supplierName = models.CharField(max_length=64)
    zone = models.IntegerField()
class Contact(models.Model):
    supplier = models.ForeignKey(Supplier, on_delete=models.SET("Company Deleted"), related_name="supplierC")
    name = models.CharField(max_length=64)

上html

<select name="supplier" id="supplier">
    <option value="1">Supplier 1</option>
    <option value="2">Supplier 2</option>
</select>

如果我 select 供应商 1,并且 post 表单到视图,我将必须首先获得 id = 1 的供应商,然后使用获得的查询来填充联系人数据库

def contactForm(request):
    if request.method == "POST":
        supplier = Supplier.objects.get(pk=request.POST['supplier'])
        mydata ={}
        mydata['supplier'] = supplier
        mydata['name'] = request.POST['contact-name']
        new_contact = Contact(**mydata)
        new_contact.save()

有没有办法避免supplier = Supplier.objects.get(pk=request.POST['supplier'])

例如在我们的模型中做类似supplier = models.ForeignKey(Supplier.id, on_delete=models.SET("Company Deleted"),

的事情

其中在新建Contact记录的时候,我们直接如下图做

def contactForm(request):
    if request.method == "POST":
        mydata ={}
        mydata['supplier'] = request.POST['supplier']
        mydata['name'] = request.POST['contact-name']
        new_contact = Contact(**mydata)
        new_contact.save()

有什么帮助吗?

您可以使用 Supplier 的 id 值将 supplier_id 参数传递给 Contact 创建,而无需事先从数据库中查询它。

def contactForm(request):
    if request.method == "POST":
        mydata ={}
        mydata['supplier_id'] = request.POST['supplier']
        mydata['name'] = request.POST['contact-name']
        new_contact = Contact(**mydata)
        new_contact.save()