Python Django模型没有保存到MySQL(Maria DB),而其他模型则保存到MySQL

Python Django模型没有保存到MySQL(Maria DB),而其他模型则保存到MySQL,python,mysql,django,mariadb,mariadb-10.4,Python,Mysql,Django,Mariadb,Mariadb 10.4,我的应用程序(Django v 2.2.5)正在使用MySQL(MariaDB 10.4.6)在其数据库中存储数据,并且已经完成并提交了所有迁移。它创建超级用户,当我登录时,我可以创建所有相关的对象,但是产品(可以说是最重要的)没有被制作出来。我尝试过更改模型,甚至删除了布尔字段(唯一不同于存储模型的字段)并应用了迁移,但仍然不起作用。我甚至删除了整个数据库,重新开始,希望能够绕过任何棘手的迁移,但这对我来说仍然毫无用处。 这是我的型号.py: class Partner(models.Mode

我的应用程序(Django v 2.2.5)正在使用MySQL(MariaDB 10.4.6)在其数据库中存储数据,并且已经完成并提交了所有迁移。它创建超级用户,当我登录时,我可以创建所有相关的对象,但是
产品
(可以说是最重要的)没有被制作出来。我尝试过更改模型,甚至删除了
布尔字段(唯一不同于存储模型的字段)并应用了迁移,但仍然不起作用。我甚至删除了整个数据库,重新开始,希望能够绕过任何棘手的迁移,但这对我来说仍然毫无用处。
这是我的
型号.py

class Partner(models.Model):
    name = models.CharField(max_length=150, blank=False, help_text="Enter the vendor name", verbose_name="Vendor name", unique=True)
    address = models.TextField(help_text="Enter the address of the vendor")
    formula = models.ForeignKey(Formula, on_delete = models.CASCADE)
    phone = PhoneNumberField(help_text="enter the vendor phone number")
    email = models.EmailField(max_length=254, help_text="Enter the vendor email address")
    photo = models.ImageField(upload_to="vendors")

    def __str__(self):
        return self.name
class ProductType(models.Model):
    name = models.CharField(max_length=150, blank=False, help_text="Enter the kind of product this is", verbose_name="Product type")

    def __str__(self):
        return self.name

class Product(models.Model):
    name = models.CharField(max_length=150, blank=False, help_text="Enter the name of the product", verbose_name="Product name")
    price = models.DecimalField(max_digits=12, decimal_places=5,\
         help_text="Enter the price of the product", \
             blank = False, default=0.0)
    product_type = models.ForeignKey(ProductType, on_delete = models.CASCADE)
    vendor = models.ForeignKey(Partner, on_delete = models.CASCADE)
    photo = models.ImageField(upload_to="products")


    def __str__(self):
        return self.vendor.name + ": " + self.name

我使用的字段或元数据参数是否不受支持?我对自己做错了什么感到迷惘。我试着查看日志,但看不到任何明显的东西可以为我指明正确的方向(我承认不太擅长数据库)。 以下是错误日志:

InnoDB: using atomic writes.
2019-12-11 21:29:02 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2019-12-11 21:29:02 0 [Note] InnoDB: Uses event mutexes
2019-12-11 21:29:02 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-12-11 21:29:02 0 [Note] InnoDB: Number of pools: 1
2019-12-11 21:29:02 0 [Note] InnoDB: Using SSE2 crc32 instructions
2019-12-11 21:29:02 0 [Note] InnoDB: Initializing buffer pool, total size = 16M, instances = 1, chunk size = 16M
2019-12-11 21:29:02 0 [Note] InnoDB: Completed initialization of buffer pool
2019-12-11 21:29:02 0 [Note] InnoDB: Starting crash recovery from checkpoint LSN=3370115
2019-12-11 21:29:03 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2019-12-11 21:29:03 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2019-12-11 21:29:03 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2019-12-11 21:29:03 0 [Note] InnoDB: Setting file 'C:\xampp\mysql\data\ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2019-12-11 21:29:03 0 [Note] InnoDB: File 'C:\xampp\mysql\data\ibtmp1' size is now 12 MB.
2019-12-11 21:29:03 0 [Note] InnoDB: Waiting for purge to start
2019-12-11 21:29:03 0 [Note] InnoDB: 10.4.6 started; log sequence number 3370124; transaction id 2759
2019-12-11 21:29:03 0 [Note] InnoDB: Loading buffer pool(s) from C:\xampp\mysql\data\ib_buffer_pool
2019-12-11 21:29:03 0 [Note] Plugin 'FEEDBACK' is disabled.
2019-12-11 21:29:03 0 [Note] Server socket created on IP: '::'.
软件版本:

  • Python 3.6.4(v3.6.4:d48eceb,2017年12月19日,06:54:40)[MSC v.1900 64 位(AMD64)]
  • Django v 2.2.5
  • MariaDB 10.4.6
  • mysqlclient 1.4.4

如果您能给我任何帮助,我将不胜感激。

这些换行符是您实际的python代码吗?我怀疑他们是,但如果是这样的话,他们不应该是。

不久前我也遇到过类似的问题。该问题与MariaDB 10.4有关

非常奇怪的是,可以在django应用程序中的任何位置保存数据,但管理页面不起作用。例如,做一个


恢复到MariaDB 5.5解决了问题。

您所说的“我单击保存,它什么也不做”是什么意思?没有错误,没有重新加载页面?如果是这样,问题不在于数据库,而在于一个或多个字段中的无效数据。我的意思是,当我单击“保存”按钮时,它将加载但从不终止。我尝试输入无效数据进行控制,结果显示一条错误消息,但当我修复错误时,它只会无限加载。实际上,它是有效的。这是生成多行语句的方法之一,即使没有,也会通过调用python中的异常来停止服务器运行。它不会影响数据库我不确定,如果我在django模型中以相同的方式放置它们,它会为我抛出一个无效的语法错误。@请尝试,它将帮助您编写更干净的代码。断行不太可能是原因,但我将尝试删除它们。但这一切都在sqlite上运行,所以我想知道为什么mariadb如此挑剔,以至于应用程序开始自己保存。我不记得做过什么改变。我所做的只是添加了保存前和保存后的信号接收器,以查看东西在何处损坏,然后它突然开始工作。。电脑很奇怪。