2015-01-09 67 views
0

我刚刚开始一些django,我有一点麻烦,使这项工作。 我只想创建一个组,其中有成员和那些成员创建主题。现在,我在挣扎的地方是我不知道如何将主题添加到组中。Django的数据库模型is_valid

我如何通过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(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') 

回答

0

这不是100%清楚,但我怀疑您的问题是您想在创建主题时设置组,但您已将组中的主题定义为M2M,而不是相反。所以它不会自动发生。

您可以参考中集集团在因此主题:

mytopic.group_set 

使这些表单上,您可以通过以下this doc添加一个内联表单集这些相关对象。

+1

哇,这是中国人给我的男人。哈哈:D 我的问题确实是它没有在组中。我会尽力遵循该文档。我已经阅读过那篇文章,但并不理解它:/我没有关于主题的ID主键,这是一个问题吗?既没有外键?也许这些可以帮助 – nokker

+0

“id”主键在模型上自动设置,无需添加。既然你有一个M2M关系,Django负责创建一个带有外键的“中间”表,以表示你的模型。 – dylrei

+0

对不起,但我仍然不知道它们如何自动连接:/什么是group_set?这是一个功能? (看着内联工厂的东西,但这并没有远) – nokker