我正在尝试在Django中创建一个用户注册表单,该表单允许一个主字段以及一个关联的整数字段。我需要每个用户都能够选择一种类型(用于电影),然后选择他们喜欢该类型的百分比(0-100)。我已经将百分比创建为一个单独的模型,但是我需要将其与每个用户的每个流派相关联。如何将每个用户的流派与特定的“喜欢”百分比相关联?现在,我只有一个类型列表,没有办法像每种类型一样选择百分比。
#app/models.py
class Length(models.Model):
length = models.IntegerField(default="Default")
def __str__(self):
return str(self.length)
class Genre(models.Model):
title = models.CharField(max_length=40, help_text="Enter genre name", default="Default")
like = models.ManyToManyField(Like, help_text='Genre like percent', default="1")
def __str__(self):
return self.title
#users/models.py
import stuff
class User(AbstractUser):
first_name = models.CharField(max_length = 30, blank = True)
last_name = models.CharField(max_length = 30, blank = True)
email = models.EmailField(unique = True)
city = models.CharField(max_length = 30, blank = True, default='Default Town')
state = models.CharField(max_length = 2, default='CA')
summary = models.CharField(max_length=250, default='Default summary')
genres = models.ManyToManyField(Genre, help_text='Select each genre.', default='default', related_name='genre_model')
def __str__(self):
return self.email
#users/forms.py
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm):
model = User
fields = ['username',
'email',
'first_name',
'last_name',
'city',
'state',
'summary',
'genres',]
答案 0 :(得分:0)
执行此操作的一个好方法可能是使用贯通模型将用户与流派链接,跟踪用户在该模型中而不是流派模型中喜欢该流派的程度,因为“喜欢”百分比取决于与用户的联系。
因此您可以拥有一个类似于以下内容的类:
class Like(models.Model): # name this model something better than "Like"
user = models.ForeignKey(User, related_name="liked_genres")
genre = models.ForeignKey(Genre, related_name="user_ratings")
rating = models.IntegerField()
这也意味着用户可以喜欢多种类型,而不仅仅是一种。