反向访问者冲突 [英] Reverse accessor clash

查看:122
本文介绍了反向访问者冲突的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正试图将多个作业分配给发票/购买,但是我遇到问题。我错过了什么吗?这是需要多对多的吗?

I'm trying to be able to assign multiple jobs to an invoice/purchase, however I'm running into an issue. Am I missing something? Does this need to be a many-to-many or something?

我收到以下错误:

invoices.Job.job: (fields.E304) Reverse accessor for 'Job.job' clashes with reverse accessor for 'Job.job'.
    HINT: Add or change a related_name argument to the definition for 'Job.job' or 'Job.job'.
purchases.Job.job: (fields.E304) Reverse accessor for 'Job.job' clashes with reverse accessor for 'Job.job'.
    HINT: Add or change a related_name argument to the definition for 'Job.job' or 'Job.job'.

purchase / models.py

purchases/models.py

class Purchase(models.Model):
...

class Job(models.Model):
    purchase = models.ForeignKey(Purchase)
    job = models.ForeignKey('jobs.Job')

    def __str__(self):
        return self.job

发票/ models.py

invoices/models.py

class Invoice(models.Model):
...

class Job(models.Model):
    invoice = models.ForeignKey(Invoice)
    job = models.ForeignKey('jobs.Job')

    def __str__(self):
        return self.job


推荐答案

您需要更改外键中的相关名称,并为了清晰起见,可能需要重命名模型。

You need to change the related names in foreign key and possibly rename the models for clarity.

# i dont recommended ever naming 2 models the exact same way either

class PurchaseJob(models.Model):
    purchase = models.ForeignKey(Purchase, related_name='purchase_job')

class InvoiceJob(models.Model):
    invoice = models.ForeignKey(Invoice, related_name='invoice_job')

添加相关名称保持命名约定干净整洁,同时您也可以通过这样做避免大量的Django错误。

Adding related names keeps naming conventions clean and neat, also you avoid alot of Django errors by doing so.

这篇关于反向访问者冲突的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆