Python 在Django Admin中更新表关系
我正在尝试创建一个网站目录,我是Django的新手。我需要的是:一个网站可以有许多支付处理器和一个支付处理器(贝宝,Payza等)可以属于许多网站。我试图创建一个表关系来表示这一点。我的模型是这样的:Python 在Django Admin中更新表关系,python,django,database,django-models,django-admin,Python,Django,Database,Django Models,Django Admin,我正在尝试创建一个网站目录,我是Django的新手。我需要的是:一个网站可以有许多支付处理器和一个支付处理器(贝宝,Payza等)可以属于许多网站。我试图创建一个表关系来表示这一点。我的模型是这样的: # Models.py class Sites(models.Model): name = models.CharField(max_length=75) link = models.CharField(max_length=150) description = model
# Models.py
class Sites(models.Model):
name = models.CharField(max_length=75)
link = models.CharField(max_length=150)
description = models.TextField(blank=True, null=True)
def __str__(self):
return self.name
class PaymentProcessors(models.Model):
name = models.CharField(max_length=75)
def __str__(self):
return self.name
class Sites_PaymentProcessors(models.Model):
site = models.ManyToMany(Sites)
payment_processor = models.ManyToMany(PaymentProcessors)
首先,我想知道我的模型是否正确。如果没有,我如何修复它
其次,我正在使用Django Admin site创建站点和支付处理程序,当我添加新站点时,如何使用
站点
和支付处理程序
之间的关系自动填充我的站点
支付处理程序表?我会稍微更改模型以适应
现在,如果您想要自定义字段或随关系存储更多信息,可以使用
例如,如果要关联金额限制或更自定义的内容:
class Sites(models.Model):
name = models.CharField(max_length=75)
link = models.CharField(max_length=150)
description = models.TextField(blank=True, null=True)
def __str__(self):
return self.name
class PaymentProcessors(models.Model):
name = models.CharField(max_length=75)
sites = models.ManyToManyField('Sites', related_name='payment_processors', through='SitePaymentProcessor')
def __str__(self):
return self.name
from django.core.validators import MaxValueValidator
class SitePaymentProcessor(models.Model):
site = models.ForeignKey('Site')
payment_processors = models.ForeignKey('PaymentProcessors')
amount_limit = models.IntegerField(default=1000,
validators=[
MaxValueValidator(100)
])
现在,这只是一个例子
现在,您可以通过管理界面将数据填充到模型中
< >自动填充大型数据集,我会考虑使用而不是单独填充元素。
class Sites(models.Model):
name = models.CharField(max_length=75)
link = models.CharField(max_length=150)
description = models.TextField(blank=True, null=True)
def __str__(self):
return self.name
class PaymentProcessors(models.Model):
name = models.CharField(max_length=75)
sites = models.ManyToManyField('Sites', related_name='payment_processors', through='SitePaymentProcessor')
def __str__(self):
return self.name
from django.core.validators import MaxValueValidator
class SitePaymentProcessor(models.Model):
site = models.ForeignKey('Site')
payment_processors = models.ForeignKey('PaymentProcessors')
amount_limit = models.IntegerField(default=1000,
validators=[
MaxValueValidator(100)
])