首页 > 解决方案 > 如何在 django 模型中按个人将多对多分开?

问题描述

如何更改每位玩家的付款状态?我无法在此处添加状态字段,因为它会更改多对多字段中所有用户的状态,我想对其进行自定义以使每个用户具有不同的状态。

from django.db import models
from users.models import Profile
# Create your models here.

class Payments(models.Model):
    match = models.CharField(max_length=30)
    amount = models.DecimalField(default = 0, max_digits = 5, decimal_places = 2)
    players = models.ManyToManyField(Profile)
    datespent = models.DateField('Date Spent')

标签: pythonpython-3.xdjangodjango-models

解决方案


我相信你想要这个:

from django.db import models
from users.models import Profile


class PlayerPayment(models.Model):
    PENDING = 'pending'
    PAID = 'paid'
    STATUS_CHOICES = (
        (PENDING, 'Pending',)
        (PAID, 'Paid')
    )
    user_profile = models.ForeignKey(Profile)
    payment_data = models.ForeignKey("PaymentData")
    status = models.CharField(choices=STATUS_CHOICES, default=PENDING)


class PaymentData(models.Model):
    match = models.CharField(max_length=30)
    amount = models.DecimalField(default = 0, max_digits = 5, decimal_places = 2)
    players = models.ManyToManyField(Profile, through=PlayerPayment)
    datespent = models.DateField('Date Spent')

我冒昧地更改Payments为,PaymentData因为您的模型应该是单数形式,因为它们代表单个实体(即表中的单行)。


推荐阅读