2015-01-09 64 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