在django中如何设置ManyToMany字段的初始值? [英] How do you set the initial value for a ManyToMany field in django?
问题描述
我明白,我需要给它一个列表,但我不能让它工作。我现在的代码是:
userProfile = request.user.get_profile()
雇主= userProfile。雇主
bar_memberships = userProfile.barmembership.all()
profileForm = ProfileForm(
initial = {'雇主':雇主,'barmembership':bar_memberships})
但这不行。我在这里缺少一些东西吗?
每个请求在评论中,以下是我的模型的相关部分:
#一个持有和处理酒吧会员资格的课程。
class BarMembership(models.Model):
barMembershipUUID = models.AutoField(每个条形成员的唯一ID,
primary_key = True)
barMembership = USStateField(
def __unicode __(self):
return self.get_barMembership_display()
class Meta:
verbose_name =bar membership
db_table =BarMembership
ordering = [barMembership]
正在扩展的用户个人资料:
#使用我们需要的字段扩展User类的类。
class UserProfile(models.Model):
userProfileUUID = models.AutoField(每个用户配置文件的唯一ID,
primary_key = True)
user = models.ForeignKey用户
verbose_name =该模型扩展的用户,
unique = True)
雇主= models.CharField(用户的雇主,
max_length = 100,
blank = True)
barmembership = models.ManyToManyField(BarMembership,
verbose_name =用户持有的酒吧会员资格,
blank = True,
null = True)
希望这有帮助。
好的,我终于明白了。好主,有时解决方案太容易了。
我需要做:
profileForm = ProfileForm = userProfile)
我做了这个改变,现在一切正常。
I am using a ModelForm to create a form, and I have gotten the initial values set for every field in the form except for the one that is a ManyToMany field.
I understand that I need to give it a list, but I can't get it to work. My code in my view right now is:
userProfile = request.user.get_profile()
employer = userProfile.employer
bar_memberships = userProfile.barmembership.all()
profileForm = ProfileForm(
initial = {'employer': employer, 'barmembership' : bar_memberships})
But that doesn't work. Am I missing something here?
Per request in the comments, here's the relevant parts of my model:
# a class where bar memberships are held and handled.
class BarMembership(models.Model):
barMembershipUUID = models.AutoField("a unique ID for each bar membership",
primary_key=True)
barMembership = USStateField("the two letter state abbreviation of a bar membership")
def __unicode__(self):
return self.get_barMembership_display()
class Meta:
verbose_name = "bar membership"
db_table = "BarMembership"
ordering = ["barMembership"]
And the user profile that's being extended:
# a class to extend the User class with the fields we need.
class UserProfile(models.Model):
userProfileUUID = models.AutoField("a unique ID for each user profile",
primary_key=True)
user = models.ForeignKey(User,
verbose_name="the user this model extends",
unique=True)
employer = models.CharField("the user's employer",
max_length=100,
blank=True)
barmembership = models.ManyToManyField(BarMembership,
verbose_name="the bar memberships held by the user",
blank=True,
null=True)
Hope this helps.
OK, I finally figured this out. Good lord, sometimes the solutions are way too easy.
I need to be doing:
profileForm = ProfileForm(instance = userProfile)
I made that change, and now everything works.
这篇关于在django中如何设置ManyToMany字段的初始值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!