如何在Python/Django中添加带有多个服务和价格的模型



我刚刚开始学习Python/Django,我有一个问题要问你们:)我想在Django中创建一个模型,它将允许我为每个用户创建一个带有价格的服务。

例如,用户可以打开一个表格,在里面填写他们的服务,以及每项服务的价格。

但是我不知道如何创建一个合适的模型。请帮助。

您可以定义一个链接到服务和包含价格的用户的模型,因此:

from django.conf import settings
from django.core.exceptions import ValidationError
from django.db import models
classService(models.Model):
service_name = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.service_name
classServicePrice(models.Model):
service = models.ForeignKey(
Service,
on_delete=models.CASCADE
)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
price = models.DecimalField(max_digits=9, decimal_places=2)
def clean(self):
duplicate = ServicePrice.objects.exclude(pk=self.pk).filter(
user_id=self.user_id, service_id=self.service_id
).exists()
if duplicate:
raise ValidationError('The price for this service with this user already exists')
return super().clean()
class Meta:
constraints= [
models.UniqueConstraint(fields=['service', 'user'], name='price_per_user_service')
]
因此,在这里,我们参考Service模型来指定我们记录数据的服务,并参考用户模型来指定由该用户完成的服务的成本。唯一性约束将强制同一服务和用户不能有两个(或更多)ServicePrice

最新更新