Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Django 如何从一个模型获取ID并将其传递给另一个模型?德扬戈_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

Django 如何从一个模型获取ID并将其传递给另一个模型?德扬戈

Django 如何从一个模型获取ID并将其传递给另一个模型?德扬戈,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我有两个这样的模型: class Entity(models.Model): contact = models.ForeignKey(User, default=None, on_delete=models.CASCADE) company_name = models.CharField(max_length=40, blank=False, null=True) vat_registration = models.CharField(max_length=12, blank=False, nu

我有两个这样的模型:

class Entity(models.Model):
contact = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
company_name = models.CharField(max_length=40, blank=False, null=True)
vat_registration = models.CharField(max_length=12, blank=False, null=True)
street_number = models.CharField(max_length=10, blank=False, null=True)
street_name = models.CharField(max_length=100, blank=False, null=True)
post_code = models.CharField(max_length=10, blank=False, null=True)
city = models.CharField(max_length=40, blank=False, null=True)
country = models.CharField(max_length=60, blank=False, null=True)
email = models.EmailField(max_length=240, blank=False, null=True)

class Invoices(models.Model):
invoice_number = models.CharField(max_length=12, blank=False, null=True)
invoice_date = models.DateField()
invoice_code = models.CharField(max_length=10, blank=False, null=True)
client_ref = models.CharField(max_length=10, blank=False, null=True)
supplier = models.ForeignKey(Suppliers, default=None, on_delete=models.CASCADE)
net_amount = models.FloatField()
vat_paid = models.FloatField()
vat_reclaimed = models.FloatField()
invoice_type = models.CharField(max_length=10, blank=False, null=True) 
entity_name = models.ForeignKey(Entity, blank=True, null=True, default=None, on_delete=models.CASCADE)
我有一个页面,其中我输入了一些发票数据,我想将输入的发票链接到它所属的公司

以下是我的(非工作视图.py):

我试图将实体的id包含到保存的发票中

有什么想法吗

我需要补充的是,我在管理仪表板中看到了字段实体名称,但该值为空。我希望它等于我为其输入发票的实体


我在胡思乱想,不太明白if语句中应该放什么。inv变量返回一个带有实体id的queryset,但我真的不知道在提交表单时如何保存它。。。非常感谢您的帮助。

您做得对,但不完全正确。您已经将该字段作为外键,因此不必担心获取id。只需获取要链接到的整个实体对象并将其传递到实体_名称中,Django将自动将id分配给该字段。如果要查看id,请使用
object.pk
。主键中的Pk。希望这能有所帮助。

因为
实体名称是一个简单的名称,您不需要直接分配记录ID,正如前面提到的,Django将为您做这件事。简单地说:

inv = Entity.objects.first()
instance.entity_name = inv
instance.save()
另外,请注意两件事:

  • 现在,您正在从
    实体
    表中获取任何第一条记录,并且基本上所有发票都将绑定到相同的
    实体
    。也许您想按用户筛选此项:
    Entity.objects.filter(contact=request.user)。首先
  • entity\u name
    已将
    on\u delete
    参数设置为
    CASCADE
    。这意味着当相关的
    实体
    被删除时,您也将丢失发票。无论是否删除了相关的
    实体
    ,您都可能希望将发票保留为历史数据

感谢您的回复。如何在以下代码中传入实体id?instance=form.save(commit=False)inv=Entity.objects.all()instance.Entity_name=inv[???]通过硬编码inv中的值(0或1)[}字段我可以得到一个不同的实体,但我如何才能使其通用,从而根据实体的不同,值会发生变化?我很难理解如何解析其中的值…谢谢。InvoiceObject=Invoices.objects.get(pk=1)#基于您想要的。instance.entity_name=InvoiceObject@bobobomichel
inv = Entity.objects.first()
instance.entity_name = inv
instance.save()