<p>您可以使用<code>GenericForeignKey</code>实现这一点。为此,您需要支付模型上的<code>content_type</code>、<code>object_id</code>和<code>content_object</code>属性。你知道吗</p>
<pre><code>from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
class Payment(models.Model):
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
created_at = models.DateTimeField(auto_now_add=True)
amount = models.IntegerField()
</code></pre>
<p>然后你可以这样创建一个租赁付款。这适用于任何型号。因此,如果您创建一个<code>Fee</code>模型,您也可以为此创建支付</p>
<pre><code>class Lease(models.Model):
leaserholder = models.CharField(max_length=300)
lease = Lease.object.first()
Payment.objects.create(content_object=lease, amount=700)
</code></pre>
<p>注意:这需要安装<code>django.contrib.contenttypes</code>,这在大多数django应用程序中是默认的。更多信息<a href="https://docs.djangoproject.com/en/1.11/ref/contrib/contenttypes/" rel="nofollow noreferrer">check out the docs page on contenttypes</a></p>