Django数据库modelform is_valid

时间:2015-01-09 16:58:23

标签: django validation

前段时间我刚刚开始使用django,我有点麻烦才能完成这项工作。 我只是想组建一个由成员和成员组成主题的小组。现在,我挣扎的地方在于我不知道如何将这个主题添加到小组中。

如何通过showmessage(如果正确)创建主题并将主题与组连接。

尝试在人与人之间进行一些对话。以后我可以添加人员加入对话。 有些日子我被卡住帮助了我!

我的观点

def showcreate(request):

p = Group.objects.all()


return render(request,'messages/showcreate/showcreate.html',{ 'p':p})    


def show(request, item):
items = item
p = Group.objects.all()

test='/show/'+item
print "showing item: 12, "+item
if request.method == 'POST':

    form = showmessage(request.POST)
    if form.is_valid():
        print "here too : "+request.POST['q']          ***** This is me trying to make it work***
        storyi = form.save(commit=False)
        storyi.Topics.user = request.user
        storyi.Topics.wichgroupe = request.POST['q']

        storyi.save()

        return HttpResponseRedirect(test)

else:
    form=StoryForm()





return render(request,'messages/show/show.html',{ 'p':p,'item':items,'form':form})    

URL

url(r'^show/(?P<item>\w+)', 'djangoproject.home.views.show', name='show' ),
url(r'^/showcreate', 'djangoproject.home.views.showcreate' ,name='showcreate' ),

模型

class Topic(models.Model):
    user = models.ForeignKey(User)
    postit = models.TextField(max_length=300)
    comment = models.TextField(max_length=300)
    createdat = models.DateTimeField(default=timezone.now)
    wichgroupe = models.TextField(max_length=300, default="all")

def timer(self):
    return self.createdat




def __str__(self):              # __unicode__ on Python 2
    return self.postit


class Group(models.Model):
    name = models.CharField(max_length=100)
    members = models.ManyToManyField(User)
    Topics = models.ManyToManyField(Topic)

    def __str__(self):              # __unicode__ on Python 2
        return self.name

形式:

class StoryForm(ModelForm):
    class Meta:
        model = Topic

        exclude =('user','createdat','comment','wichgroupe')



class Grouping(ModelForm):
    class Meta:
        model = Group

        exclude =('Topics','members') 


class showmessage(ModelForm):
    class Meta:
        model = Group
        exclude=('user','createdat','comment','wichgroupe','Topics','members','name')

1 个答案:

答案 0 :(得分:0)

它不是100%明确,但我怀疑您的问题是您希望在创建主题时设置组,但您已将主题定义为M2M in集团,而不是相反。所以它不会自动发生。

您可以在主题中引用组的集合:

mytopic.group_set

要在表单上呈现这些内容,您可以按照this doc为这些相关对象添加内联表单集。