Django как сделать модель для пользовательской модели - PullRequest
0 голосов
/ 13 февраля 2020

Я занимаюсь разработкой приложения для регистрации в списке. У меня есть две модели: Модель для Пользователь и Модель для Задачи . Я добавляю новую задачу throw Ajax к одному пользователю, добавляя и отображая для каждого пользователя. Есть ли какие-то решения? Здесь некоторые фотографии First user dashboard

Second user dashboard

Вот мой код: models.py

 class Task(models.Model):
    title=models.IntegerField()
    date = models.DateTimeField(default=datetime.now,blank=True)
    is_published=models.BooleanField(default=True)

 class CustomUser(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    image=models.FileField(upload_to='photos/%Y/%m/%d/',null=True,blank=True)

views.py

  if request.method == 'POST' and request.POST['form_type'] == 'task':
    if request.is_ajax():
        addtask = AddTask(request.POST)
        if addtask.is_valid():
            user = request.user.id
            addtask.objects.filter(user=user).cleaned_data
            addtask.objects.filter(user=user).save()               
            task_object = Task.objects.filter(user=user)(addtask)
            return JsonResponse({'error': False, 'data': task_object})
        else:
            print(addtask.errors)
            return JsonResponse({'error': True, 'data': addtask.errors})
    else:
        error = {
            'message': 'Error, must be an Ajax call.'
        }
        return JsonResponse(error, content_type="application/json")



    addtask = AddTask()
    task = Task.objects.order_by('-date').filter(is_published=True)

html page

       {% if task %}
                    {% for tas in task %}
                Task content



                        {% endfor %}
                        {% else %}

                        {% endif %}

Ответы [ 3 ]

1 голос
/ 13 февраля 2020

Может быть, вам следует добавить отношение к CustomUser в модели задач и отфильтровать задачи по владельцу, прежде чем отображать данные в шаблоне?

 class Task(models.Model):
    title=models.IntegerField()
    date = models.DateTimeField(default=datetime.now,blank=True)
    is_published=models.BooleanField(default=True)
    user=models.ForeignKey(CustomUser)

 class CustomUser(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    image=models.FileField(upload_to='photos/%Y/%m/%d/',null=True,blank=True)

И в виду:

    ...
    addtask = AddTask()
    task = Task.objects.filter(is_published=True, user_id=request.user.id).order_by('-date')
0 голосов
/ 13 февраля 2020
  1. Если вы хотите создать модель CustomUser, вы должны создать класс и унаследовать его от AbstractBaseUser или AbstractUser (django документация ).

  2. Ваша модель задач не связана с CustomUser. Вы создаете экземпляр AddTask (?), Но не связывает его с любым пользователем.

  3. Вы не отправили представление, которое отображает шаблон HTML, но я думаю, что ваш запрос похож на Tasks = Task.objects.all(), который возвращает все задачи.

Вот как вы должны создать модель CustomUser

Это документация об отношениях в Django

Речь идет о выполнении запросов в Django

0 голосов
/ 13 февраля 2020

Итак, ошибка в том, что вы никогда не связывали свою модель CustomUser с вашей моделью задачи . Они должны иметь отношения, как один ко многим. Как только это будет достигнуто, вы должны извлечь из базы данных только те задачи, которые относятся к интересующему пользователю , и отправить их на страницу HTML. Тогда будут отображаться только задачи, связанные с одним конкретным пользователем.

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