Создание группы / команд в Django - Py - PullRequest
0 голосов
/ 30 января 2020

У меня возникают трудности с поиском примеров, приложений для создания групп на Django, и я могу использовать некоторую справку.

По сути, есть страница «Создать новую команду», на которой зарегистрированный пользователь может использовать, я я пытаюсь автоматически назначить пользователя в группу с помощью .user_set.add(User).

Мои вопросы: Правильно ли я создаю новые команды (при отладке g1 перезаписывается каждая время, я должен сделать For L oop, чтобы убедиться, что g + n =? не существует? и Любой способ получить доступ к созданным командам на странице администратора или Django Py Shell?

Заранее спасибо, я новичок

models.py

class TeamCreation(models.Model):
    class meta:
        db_table="teams"

    team_name = models.CharField(max_length=100)
    team_key = models.CharField(max_length=70)
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete = models.CASCADE)

    def __str__(self):
        return self.team_name

forms.py

class TeamCreationForm(forms.ModelForm):
    class Meta:
        model = TeamCreation
        fields=['team_name','team_key']

views.py

from django.shortcuts import render, redirect
from .forms import TeamCreationForm
from django.contrib.auth.decorators import login_required
from django.utils import timezone
from django.contrib.auth.models import Group
from .models import TeamCreation

@login_required
def create_team(request):

        if request.POST:
            form = TeamCreationForm(request.POST)
            if form.is_valid():
                newTeam = form.save(commit=False)
                newTeam.author = request.user
                newTeam.date_posted = timezone.now

                newTeam.save()

                #set group name
                g1 = Group.objects.create(name=newTeam.team_name)

                #autopopulate / assign author to new team
                g1.user_set.add(newTeam.author)

                #debug (hopefully print: Team Name, Key, Creator, Members
                print(newTeam)

        else:
            form=TeamCreationForm()

        context={
                "form":form,
                }

        return render(request, "pages/team_creation.html", context)

1 Ответ

0 голосов
/ 30 января 2020

g1 каждый раз перезаписывается, я должен сделать For For L oop, чтобы убедиться, что g + n =? не существует

Он перезаписывается (создается) каждый раз, потому что вы не проверяли, существует ли группа с таким именем. Попробуйте это:

new_group, created = Group.objects.get_or_create(name=newTeam.team_name)

Любой способ доступа к созданным командам на странице администратора

Да, в admin.py добавить это:

from django.contrib import admin
from app.models import TeamCreation

admin.site.register(TeamCreation)

Просто замените from app.model на фактическое имя вашего приложения.

Подробнее о Django admin можно прочитать здесь.

Кроме того, я не знаю Какова ваша цель в создании группы, но, возможно, вам будет полезно прочитать о разрешении группы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...