Django的ForeignKey字段的初始值

Django的ForeignKey字段的初始值

问题描述:

我试图将一些初始数据传递到CourseForm中的卷字段,但由于某些原因,它不起作用。卷字段是ForeignKey到数据库中的表。Django的ForeignKey字段的初始值

它不会给我错误;它只是不显示任何信息。

我的模型与各卷栏:

class Course(models.Model): 
    volume = models.ForeignKey(CourseVolume) 
    code = models.CharField(max_length=100, default=None) 
    # ... code shortend to simplify 

Modelform其模型设置为Course

class CourseForm(ModelForm): 
    class Meta: 
     model = Course 
     fields = '__all__' 

我的看法,我正在尝试设置初始数据为CourseForm。它似乎没有工作。 user.volume_preference返回一个从1到x的整数,它是特定卷的ID。

def view_course_create(request): 
    if request.method == 'POST': 
     form = CourseForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return redirect('teaching_courses') 
    else: 
     user = MbsUser.get_user_from_ad(request.session['username']) 
     if user.volume_preference is not None: 
      volume = user.volume_preference 
      form = CourseForm(initial={'volume': volume}) 
     else: 
      form = CourseForm() 
    return render(request, 'teaching/course_create.html', {'form': form}) 

我CourseVolume型号:

class CourseVolume(CourseEnum): 
    published = models.BooleanField(default=False) 

class Meta(CourseEnum.Meta): 
    db_table = 'mbs_course_volume' 

这又如何解决呢?

+0

您应该在'CourseVolume'模型的字段中提及初始值。然后它分配到'volume'字段。 – 2017-10-11 09:56:41

+0

尝试分配卷实例而不是id:'volume = CourseVolume.objects.get(id = user.volume_preference)' – Alasdair

+0

所以这是我需要改变的CourseVolume模型。我已将它添加到我的帖子中。但考虑到它使用'db_table ='它似乎不允许像:'self.fields [field_name] .initial = field_value'我尝试了你的方法@Alasdair没有运气。 –

尝试添加卷字段的默认值。该值应该是相关表(CourseVolume)的现有ID。

volume = models.ForeignKey(CourseVolume, default=1) 
+0

这有效,但我不知道如何用'user.volume_preference'动态地更新这个值。每个用户的默认值是(可以)不同。 –