2015-09-10 59 views
0
from django.contrib.auth.models import User 
from django.db import models 

class Team(models.Model): 
    team_name = models.CharField(max_length=255, unique=True) ## they can create a new team here 
    description = models.TextField() 
    slug = models.SlugField(unique=True) 
    user = models.OneToOneField(User, blank=True, null=True) ## I connect my User here, so they can "own" this info... 

用戶必須創建一個新的團隊(通過「TEAM_NAME」字段)的選項,但我也希望給用戶的選擇加入另一個團隊(由不同的用戶創建),我可以只添加一個新的領域到我的團隊模型?最好在表單上,​​他們可以看到創建的團隊列表,選中他們想要加入的團隊並保存表格。最簡單的方式爲用戶在Django自己添加到一個「團隊」

我能加入這樣的事情我的Team類:

team = forms.ModelMultipleChoiceField(queryset=Team.objects.all()).filter('team_name') 

或也許是這樣的:

TEAM_CHOICES = Team.objects.all()).filter('team_name') 
team = forms.CharField(widget=forms.Select(choices=TEAM_CHOICES)) 

而且,如何將這些數據正確保存?

+0

'OneToOneField'?你的團隊只能有一個用戶? –

+0

@burhan - 是的,這應該可能是一個ManyToMany? –

+0

@MichaelSebastian你需要將OneToOneField設置爲ManyToManyField或者將ForiegnKey設置爲你的用戶的Team。就我個人而言,我每次都會在M2M上採用FK。但是如果你在'User'模型上使用M2M而不是FK,你需要考慮如何存儲創建團隊的用戶。 –

回答

1

如果您想允許用戶加入團隊,那麼我會在用戶模型上擁有團隊屬性,這是團隊的FK。

然後在表單中,您可以按照您的建議定義可用團隊的列表;

team = forms.ModelMultipleChoiceField(queryset=Team.objects.all()) 

而且我也建議看Select2它創建了一個JavaScript的「搜索」類型的字段,當有人開始鍵入字符,將過濾隊。

此外,在您的Team模型user場將被更好地命名爲creatorowner,這樣你就不會與球隊相關的標準用戶混淆。

+0

@MichaelSebastian你是從表單模塊中導入模型中的類嗎?您需要從.models導入Team',以便Django知道需要查詢的表。 –

+0

啊對 - 抱歉 - 我誤解了你說的話,我以爲你說過把它添加到我的models.py類 –

+0

@MichaelSebastian不,你需要在表單中爲用戶選擇一個團隊。然後,如果您選擇在用戶上放置一個團隊ForeignKey,則可以將用戶模型中的團隊視圖發佈到表單中的團隊。 –

相關問題