Как создать разные таблицы базы данных для типов пользователей в Django?

Вот что я пытаюсь сделать.

Проект имеет два типа пользователей:

  1. Spot Owners
  2. Spot Rentee

Владельцы могут добавить слот, арендаторы могут забронировать слот.

Вот мой код:

models.py:

class UsersManager(BaseUserManager):
    def create_user(self, nid, password=None):
        if not nid:
            raise ValueError('Users must have an nid address')
        user = self.model(
            nid=self.normalize_email(nid),
        )
        user.set_password(password)
        user.save(using=self._db)
        return user
    
class Users(AbstractBaseUser):
    user_type = (
        ('R', 'Rentee'),
        ('S', 'Spot Owner'),
    )
    nid = models.CharField(max_length=30, unique=True, primary_key=True)
    name = models.CharField(max_length=200)
    email = models.CharField(max_length=200)
    password = models.CharField(max_length=128)
    contact = models.CharField(max_length=15, null=True)
    last_login = models.DateTimeField(auto_now_add=True, null=True)
    is_spot_owner = models.CharField(max_length=10, choices=user_type,default='user')
    USERNAME_FIELD = 'nid'
    objects = UsersManager()
    def __str__(self):
        return self.nid

class SpotOwner(Users,models.Model):
    owner_info = models.CharField(max_length=200)
    def __str__(self) -> str:
        return self.nid.nid
    
class Rentee(models.Model):
    nid = models.ForeignKey(Users, on_delete=models.CASCADE)
    vehicle_type = models.CharField(max_length=200)
    rentee_credit = models.IntegerField()
    def __str__(self):
        return self.name

forms.py:

class UserForm(ModelForm):
    class Meta: 
        model = Users
        fields = '__all__'


class OwnerForm(ModelForm):
    class Meta:
        model = SpotOwner
        fields = '__all__'

views.py:

def signup(request):
    form = UserForm(request.POST)
    print("Errors",form.errors)
    if request.method == 'POST':
        print(request.POST)
        if form.is_valid():
            user = form.save()
            user.set_password(request.POST.get('password'))
            user.save()
            nid = request.POST.get('nid')
            password = request.POST.get('password')
            user = authenticate(request, nid=nid, password=password)
            login(request,user,backend='django.contrib.auth.backends.ModelBackend')
            messages.success(request, 'User created successfully')
            return redirect('/')
        else: 
            print("Form invalid")
    context = {'form': form}
    return render(request, 'home/signup.html',context=context)

Now, I can populate the database. But there is one single table users. The issue is I cannot create a OneToOne relation with Owners only. [Owners adds slots]

enter image description here How can I create a different table and populate data from one form? If user is Owner then populate owner table else populate rentee table from the combined table that I am getting?

Я изучаю Django. Любая помощь будет высоко оценена.

Таблица пользователей

Таблица владельцев

Вернуться на верх