当我尝试迁移模型时,为什么会收到“无法序列化错误”?]

问题描述 投票:0回答:1
我对django刚起步,所以我很容易迷路。我正在尝试使用sql模型作为参考来构建模型(我想这就是人们的方式)。我解决了大多数错误,但最后一个错误使我丧命,网上找不到任何帮助。这是我的代码:

from phone_field import PhoneField # Create your models here. class Room(models.Model): number = models.IntegerField(primary_key=True, unique=True) duration = models.IntegerField(default="3") max_score = models.IntegerField(default="100") name = models.CharField(max_length=30) status = models.CharField(max_length=15, default="inactive") class Credit(models.Model): value = models.CharField(max_length=3) class Language(models.Model): name = models.CharField(max_length=20, default="chinese") class Token(models.Model): token_id = models.IntegerField(primary_key=True, unique=True) class Level(models.Model): value = models.IntegerField(default="1") class Event(models.Model): name = models.CharField(max_length=80) phone_number = PhoneField(blank=True, help_text='Contact phone number') date = models.DateTimeField('date of event') members = models.IntegerField() credit = models.ForeignKey(Credit, on_delete=models.DO_NOTHING) language = models.ForeignKey(Language, on_delete=models.SET_DEFAULT, default="chinese") level = models.ForeignKey(Level, on_delete=models.SET_DEFAULT, default="1") class Team(models.Model): name = models.CharField(max_length=80) token_id = models.ForeignKey(Token, blank=True, null=True,on_delete=models.SET_NULL) event_id = models.ForeignKey(Event, on_delete=models.CASCADE) language = models.ForeignKey(Language, on_delete=models.SET_DEFAULT, default=Event.language) level = models.ForeignKey(Level, on_delete=models.SET_DEFAULT, default=Event.level) players_number = models.IntegerField(default="3") end_time = models.DateTimeField() activation_status = models.BooleanField(default=True) active_room = models.ForeignKey(Room, blank=True, null=True,on_delete=models.SET_NULL) total_score = models.IntegerField(default="0") class ScoreTable(models.Model): team_id = models.ForeignKey(Team,blank=True, null=True, on_delete=models.CASCADE) room_number = models.ForeignKey(Room, blank=True, null=True,on_delete=models.CASCADE) score = models.IntegerField(default="0") time = models.DateTimeField('time of scoring', auto_now_add=True) class BestScore(models.Model): team_name = models.CharField(max_length=80) total_score = models.IntegerField(default="0") date = models.DateTimeField()

[当我尝试迁移模型时,出现此错误:

(mysite) MBPdeAlexandre:mysite nivren$ python manage.py makemigrations manager Migrations for 'manager': manager/migrations/0001_initial.py - Create model BestScore - Create model Credit - Create model Event - Create model Language - Create model Level - Create model Room - Create model Token - Create model Team - Create model ScoreTable - Add field language to event - Add field level to event Traceback (most recent call last): File "manage.py", line 21, in <module> main() File "manage.py", line 17, in main execute_from_command_line(sys.argv) File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line utility.execute() File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv self.execute(*args, **cmd_options) File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute output = self.handle(*args, **options) File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/core/management/base.py", line 83, in wrapped res = handle_func(*args, **kwargs) File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/core/management/commands/makemigrations.py", line 182, in handle self.write_migration_files(changes) File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/core/management/commands/makemigrations.py", line 219, in write_migration_files migration_string = writer.as_string() File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/db/migrations/writer.py", line 141, in as_string operation_string, operation_imports = OperationWriter(operation).serialize() File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/db/migrations/writer.py", line 99, in serialize _write(arg_name, arg_value) File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/db/migrations/writer.py", line 51, in _write arg_string, arg_imports = MigrationWriter.serialize(item) File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/db/migrations/writer.py", line 271, in serialize return serializer_factory(value).serialize() File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/db/migrations/serializer.py", line 37, in serialize item_string, item_imports = serializer_factory(item).serialize() File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/db/migrations/serializer.py", line 199, in serialize return self.serialize_deconstructed(path, args, kwargs) File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/db/migrations/serializer.py", line 86, in serialize_deconstructed arg_string, arg_imports = serializer_factory(arg).serialize() File "/Users/nivren/.virtualenvs/mysite/lib/python3.8/site-packages/django/db/migrations/serializer.py", line 336, in serializer_factory raise ValueError( ValueError: Cannot serialize: <django.db.models.fields.related_descriptors.ForwardManyToOneDescriptor object at 0x10a7d5310> There are some values Django cannot serialize into migration files. For more, see https://docs.djangoproject.com/en/3.0/topics/migrations/#migration-serializing

感谢您的帮助,在此期间,我将继续寻找答案:)

我对django刚起步,所以我很容易迷路。我正在尝试使用sql模型作为参考来构建模型(我想这就是人们的方式)。我解决了大多数错误,但是最后一个正在杀死...

python django python-3.x django-models model
1个回答
0
投票
我认为问题在于您的型号,特别是PhoneModel。您使用错误来实现验证器。请参阅此链接以了解验证器:https://docs.djangoproject.com/en/3.0/ref/validators/#writing-validators
© www.soinside.com 2019 - 2024. All rights reserved.