在用户注册过程中如何创建模型实例?Django的

马图斯

我正在用Django写一个简单的事件应用程序。我有注册和登录过程。

我有两个模型。模型创建者具有OneToOneField属性User

Event模型具有属性creator作为ForeignKey含有特定User

我怎么了 创建新用户时,我想同时创建Creator模型的新实例,并以该用户身份登录并创建新事件时,希望将Event中的creator的值设置为该用户。

我该怎么做?models.pyviews.py以下:

models.py

class Event(models.Model):
    SPORT = (
        ('Football', 'Football'),
        ('Volleyball', 'Volleyball'),
        ('Basketball', 'Basketball'),
        ('Futsal', 'Futsal'),
        ('Tennis', 'Tennis'),
        ('Handball', 'Handball'),
        ('Ice Hockey', 'Ice Hockey'),
        ('Paintball', 'Paintball')
    )
    creator = models.ForeignKey(Creator, null=True,     on_delete=models.SET_NULL)
    sport = models.CharField(max_length=20, null=True, choices=SPORT)
    event_name = models.CharField(max_length=30)
    event_date = models.DateTimeField(default=date.today())
    end_event_date = models.DateTimeField(default=date.today())
    current_members = models.IntegerField(default=1)
    total_members = models.IntegerField(default=0)
    event_location = models.CharField(max_length=50)
    cost = models.FloatField(default=0, max_length=5)
    description = models.CharField(max_length=300, blank=True)

    def __str__(self):
        return self.event_name

class Creator(models.Model):
    user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)

views.py

@unauthenticated_user
def registerPage(request):
    form = CreateUserForm()

    if request.method == 'POST':
        form = CreateUserForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, 'Account created successfully!')
            return redirect('login')

    context = {'form': form}
    return render(request, 'events/register.html', context)
ben

Creator在注册时创建一个新的:

views.py

...
from django.contrib.auth import User

from .models import Creator
...
    ...
        if form.is_valid():
            new_user = form.save()
            Creator.objects.create(user=new_user)
            messages.success(request, 'Account created successfully!')

要将创建者添加到中Event,您需要get()使用模型中当前登录的用户(request.userCreator,然后creator在创建新用户时传递到字段中Event

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章