首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django错误: datetime.datetime

Django错误: datetime.datetime
EN

Stack Overflow用户
提问于 2016-03-05 11:19:30
回答 1查看 382关注 0票数 2

执行python manage.py migrate时,屏幕上会出现以下错误:

代码语言:javascript
复制
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 146, in column
sql
default_value = self.effective_default(field)

File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 211, in effect
ive_default
default = field.get_db_prep_save(default, self.connection)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init_.py", line 710, in get_
db_prep_save
prepared=False)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/init.py", line 2003, in get
db_prep_value
value = self.get_prep_value(value)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init_.py", line 2010, in get
_prep_value
if value and ':' in value:
TypeError: argument of type 'datetime.datetime' is not iterable

我试图执行python manage.py syncdb,但出现了相同的错误。有什么问题吗?

Models.py获得更多信息:

代码语言:javascript
复制
  from django.db import models
  import datetime
  from django.utils import timezone

 class Machine(models.Model):
   name = models.CharField(max_length=20, unique=True)
   ins_date = models.DateField(default=timezone.now)
   mod_date = models.DateField(default=timezone.now)
   nagios_name = models.CharField(max_length=20)
   dns = models.CharField(max_length=30)
   ip_int = models.GenericIPAddressField(null=True, blank=True)
   ip_ext = models.GenericIPAddressField()
   vlan = models.IntegerField(null=True, blank=True)
   custom = models.BooleanField(default=False)
   def __str__(self):
     return self.name

 class SecurityGroup(models.Model):
   name = models.CharField(max_length=20)
   description = models.CharField(max_length=30, null=True, blank=True)
   ins_date = models.DateField(default=timezone.now)
   mod_date = models.DateField(default=timezone.now)
   def __str__(self):
     return self.name

 class NACL(models.Model):
   machine = models.ForeignKey(Machine)
   securityGroup = models.ForeignKey(SecurityGroup)
   ins_date = models.DateField(default=timezone.now)
   mod_date = models.DateField(default=timezone.now)

 BYADMIN_CHOICES = ((1, "Input"),(0, "Output"),)

 class Rule(models.Model):
   type_rule = models.CharField(max_length=10)
   description = models.CharField(max_length=30, null=True, blank=True,   default=None)
   protocol = models.CharField(max_length=10)
   port_range_min = models.IntegerField()
   port_range_max = models.IntegerField(null=True, blank=True)
   #sg_object = models.CharField(max_length=20, null=True, blank=True)
   ip_object = models.GenericIPAddressField(null=True, blank=True)
   securityGroup_object = models.ForeignKey(SecurityGroup, null=True, blank=True)
   bound = models.BooleanField(choices=BYADMIN_CHOICES, default=1) #if           bound == True: input else: output 
  class Meta:
    unique_together = (("type_rule", "protocol", "port_range_min", "bound"))
  def __str__(self):
    return ("INPUT: " if(self.bound) else "OUTPUT: ") + self.type_rule + " " + self.protocol + " " + str(self.port_range_min) + " " + (str(self.securityGroup_object) if(self.securityGroup_object != None) else self.ip_object)

 class Sg_rule(models.Model):
   securityGroup = models.ForeignKey(SecurityGroup)
   rule = models.ForeignKey(Rule)
   ins_date = models.DateField(default=timezone.now)
   mod_date = models.DateField(default=timezone.now)

 class Service(models.Model):
   name = models.CharField(max_length=20)
   macroService = models.CharField(max_length=20)
   def __str__(self):
     return self.name


 class M_Service(models.Model):
   machine = models.ForeignKey(Machine)
   service = models.ForeignKey(Service)
   ins_date = models.DateField(default=timezone.now)
   mod_date = models.DateField(default=timezone.now)

迁移失败的原因是:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models
import datetime
from django.utils.timezone import utc


class Migration(migrations.Migration):

dependencies = [
    ('adminApp', '0009_auto_20160229_1716'),
]

operations = [
    migrations.AddField(
        model_name='rule',
        name='ip_object',
        field=models.GenericIPAddressField(default=datetime.datetime(2016, 2, 29, 17, 17, 42, 169176, tzinfo=utc)),
        preserve_default=False,
    ),
    migrations.AlterField(
        model_name='rule',
        name='sg_object',
        field=models.CharField(max_length=20),
    ),
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-05 12:25:58

您的迁移正在尝试使用日期时间作为ip地址字段的默认值。那也太没道理了!

代码语言:javascript
复制
field=models.GenericIPAddressField(default=datetime.datetime(2016, 2, 29, 17, 17, 42, 169176, tzinfo=utc)),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35813440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档