Как исправить gettext() получил неожиданный аргумент ключевого слова 'null' в Django
У меня есть модель, сериализатор и представление, как показано ниже, модель
# get user model
User = get_user_model()
class Task(models.Model):
"A task can be created by the user to save the task's details"
COLOR_CHOICES = (
("red", _("Red")),
("gre", _("Green")),
("blu", _("Blue")),
("yel", _("Yellow")),
("pur", _("Purple")),
("ora", _("Orange")),
("bla", _("Black")),
("whi", _("White")),
("ind", _("Indigo")),
("lim", _("Lime")),
("cya", _("Cyan")),
)
title = models.CharField(max_length=150, blank=False, null=False, help_text=_("Enter your task's title"), verbose_name=_("title"))
description = models.TextField(max_length=500, blank=True, null=True, help_text=_("Enter your task's description"), verbose_name=_("description"))
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="utask", verbose_name=_("User"))
time_to_start = models.DateTimeField(verbose_name=_("The time that the task should be started"), help_text=_("Enter the time that you want to start your task"))
deadline = models.DateTimeField(verbose_name=_("The time that the task should be done"), help_text=_("Enter the time that you'll have done your task until it"))
priority = models.IntegerField(choices=[(0, _("Not important")), (1, _("Low")), (2, _("Medium")), (3, _("High"))], default=1, verbose_name=_("Priority"), help_text=_("Choose the priority of your task"))
color = models.CharField(max_length=3, choices=COLOR_CHOICES, default="whi", blank=True, null=True, verbose_name=_("Color"), help_text=_("Choose the color or the theme of your task"))
notification = models.BooleanField(default=True, null=False, blank=True, verbose_name=_("Notification"), help_text=_("Do you want to receive a notification when the task is getting closer to the deadline or when it's passed that?"))
def __str__(self):
return self.title
class Plan(models.Model):
"A plan is a thing which you can place your tasks into it"
title = models.CharField(max_length=150, blank=False, null=False, help_text=_("Enter your plan's title"), verbose_name=_("Title"))
description = models.TextField(max_length=1000, blank=True, null=True, help_text=_("Enter your plan's description"), verbose_name=_("description"))
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="uplan", verbose_name=_("User"))
date = models.DateField(verbose_name=_("Date"), help_text=_("Enter the date that you want to plan", null=False, blank=False))
task = models.ForeignKey(Task, on_delete=models.CASCADE, related_name="tplan", verbose_name=_("Task"), help_text=_("Choose the task that you want to be in your plan"))
def __str__(self):
return self.title
serilizer.py
class CreateTaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
exclude = ["user"]
extra_kwargs = {
'title': {'help_text': _("Enter your task's name")},
'description': {'help_text': _("Enter your description")},
'time_to_start': {'help_text': _("Enter your time to start your task")},
'deadline': {'help_text': _("Enter your deadline")},
'priority': {'help_text': _("Enter your priority for your task")},
'color': {'help_text': _("Enter your color for your task")},
'notification': {'help_text': _("Do you want to get notification for your task's status?")},
}
def validate(self, data):
if data['time_to_start'] >= data['deadline']:
raise serializers.ValidationError(_("Time to start must be less than deadline"))
return data
view.py
class CreateTaskApiView(APIView):
"""
Create your new task with your entered data
"""
permission_classes = [IsAuthenticated]
def post(self, request):
data = CreateTaskSerializer(data=request.data)
if data.is_valid():
data = data
data.user = request.user
data.save()
return Response({
"message": _("You've just created your task")
}, status=status.HTTP_200_OK)
else:
return Response(data.errors, status=status.HTTP_400_BAD_REQUEST)
Эта ошибка возникает, когда я хочу запустить "py manage.py makemigrations" и затем появляется эта ошибка. Я понятия не имею, что не так с моим кодом, поэтому я буду рад, если вы поможете мне найти проблему, более того, я уверен, что проблема в модели задач (или модулях задач)
ошибка: TypeError: gettext() got an unexpected keyword argument 'null'
get user model
User = get_user_model()
class Task(models.Model): "Задача может быть создана пользователем для сохранения деталей задачи"
COLOR_CHOICES = (
("red", _("Red")),
("gre", _("Green")),
("blu", _("Blue")),
("yel", _("Yellow")),
("pur", _("Purple")),
("ora", _("Orange")),
("bla", _("Black")),
("whi", _("White")),
("ind", _("Indigo")),
("lim", _("Lime")),
("cya", _("Cyan")),
)
title = models.CharField(max_length=150, blank=False, null=False, help_text=_("Enter your task's title"), verbose_name=_("title"))
description = models.TextField(max_length=500, blank=True, null=True, help_text=_("Enter your task's description"), verbose_name=_("description"))
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="utask", verbose_name=_("User"))
time_to_start = models.DateTimeField(verbose_name=_("The time that the task should be started"), help_text=_("Enter the time that you want to start your task"))
deadline = models.DateTimeField(verbose_name=_("The time that the task should be done"), help_text=_("Enter the time that you'll have done your task until it"))
priority = models.IntegerField(choices=[(0, _("Not important")), (1, _("Low")), (2, _("Medium")), (3, _("High"))], default=1, verbose_name=_("Priority"), help_text=_("Choose the priority of your task"))
color = models.CharField(max_length=3, choices=COLOR_CHOICES, default="whi", blank=True, null=True, verbose_name=_("Color"), help_text=_("Choose the color or the theme of your task"))
notification = models.BooleanField(default=True, null=False, blank=True, verbose_name=_("Notification"), help_text=_("Do you want to receive a notification when the task is getting closer to the deadline or when it's passed that?"))
def __str__(self):
return self.title
class Plan(models.Model): "План - это вещь, в которую вы можете поместить свои задачи"
title = models.CharField(max_length=150, blank=False, null=False, help_text=_("Enter your plan's title"), verbose_name=_("Title"))
description = models.TextField(max_length=1000, blank=True, null=True, help_text=_("Enter your plan's description"), verbose_name=_("description"))
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="uplan", verbose_name=_("User"))
date = models.DateField(verbose_name=_("Date"), help_text=_("Enter the date that you want to plan", null=False, blank=False))
task = models.ForeignKey(Task, on_delete=models.CASCADE, related_name="tplan", verbose_name=_("Task"), help_text=_("Choose the task that you want to be in your plan"))
def __str__(self):
return self.title
Вам нужно поместить поле, подобное этому, в модель 'Plan'
date = models.DateField(verbose_name=_("Date"), help_text=_("Enter the date that you want to plan"), null=False, blank=False)