Sql Django车型-';Pcaps.uuid';必须设置unique=True,因为它被外键引用

Sql Django车型-';Pcaps.uuid';必须设置unique=True,因为它被外键引用,sql,django,python-3.x,django-models,Sql,Django,Python 3.x,Django Models,本质上,我试图创建几个用PCAP属性填充的表。我收到一个很奇怪的错误。这是models类中的代码: class Pcaps(models.Model): uuid = models.CharField(max_length=50) filename = models.CharField(max_length=200, default='') datetime = models.DateTimeField(default=datetime.now, blank=Tru

本质上,我试图创建几个用PCAP属性填充的表。我收到一个很奇怪的错误。这是models类中的代码:

class Pcaps(models.Model):
     uuid = models.CharField(max_length=50)
     filename = models.CharField(max_length=200, default='')
     datetime = models.DateTimeField(default=datetime.now, blank=True)
     filehash = models.ForeignKey(Malwares, to_field="filehash", 
 db_column="filehash")

class PcapsIps(models.Model):
    domainname = models.CharField(max_length=100)
    ip = models.CharField(max_length=100)
    uuid = models.ForeignKey(Pcaps, to_field="uuid", db_column="uuid")

class PcapsPorts(models.Model):
   number = models.CharField(max_length=100)
   uuid = models.ForeignKey(Pcaps, to_field="uuid", db_column="uuid")
有关错误如下:

错误:

analyser.PcapsIps.uuid: (fields.E311) 'Pcaps.uuid' must set unique=True 
because it is referenced by a foreign key.
analyser.PcapsPorts.uuid: (fields.E311) 'Pcaps.uuid' must set unique=True because it is referenced by a foreign key.

您必须了解外键在引擎盖下是如何工作的,即在您使用的任何数据库系统中。外键是一个表(对应于Django模型)中唯一标识另一个(或相同)表的行的字段(或字段集合)。通常,这是由主键完成的,因为主键保证是唯一的。如果您有这样做的理由,可以将
设置为_字段
以引用其他表/模型中的不同行,但该字段也必须是唯一的。因此,您需要:

uuid = models.CharField(unique=True, max_length=50)

编辑:哦,顺便说一下,如果您使用的是Django 1.8或更高版本,它现在有一个
UUIDField
。请参见

您必须了解外键在引擎盖下是如何工作的,即在您使用的任何数据库系统中。外键是一个表(对应于Django模型)中唯一标识另一个(或相同)表的行的字段(或字段集合)。通常,这是由主键完成的,因为主键保证是唯一的。如果您有这样做的理由,可以将
设置为_字段
以引用其他表/模型中的不同行,但该字段也必须是唯一的。因此,您需要:

uuid = models.CharField(unique=True, max_length=50)

编辑:哦,顺便说一下,如果您使用的是Django 1.8或更高版本,它现在有一个
UUIDField
。见

为什么奇怪?错误很明显,外键必须是唯一的。为什么奇怪?错误很明显,外键必须是唯一的。