2016-03-08 2 views
1

Я создал набор светильников с двумя полями поля с нулевым внешним ключом, но по какой-то причине, когда я пытаюсь загрузить loadata, я получаю жалобы на то, что поля должны быть целыми.Загрузите инструменты Django с полями с нулевым внешним ключом

модели (удалены некоторые вещи для краткости):

class Network(models.Model): 
    network  = models.GenericIPAddressField() 
    mask  = models.CharField(max_length=2) 
    description = models.CharField(max_length=2000) 
    designation = models.CharField(choices=DESIGNATION_CHOICES, max_length=10) 
    site  = models.CharField(choices=SITE_CHOICES, max_length=5) 
    category = models.CharField(choices=CATEGORY_CHOICES, max_length=10) 
    vlan  = models.CharField(max_length=5, blank=True, null=True) 
    vrf   = models.ForeignKey(Vrf,on_delete=models.CASCADE, blank=True, null=True) 
    parent  = models.ForeignKey('self', on_delete=models.CASCADE, related_name='supernet', blank=True, null=True) 

арматуры блок:

<django-objects version="1.0"> 
    <object model="ipmanager.network" pk="459124212"> 
     <field name="mask" type="CharField">30</field> 
     <field name="site" type="CharField">place</field> 
     <field name="network" type="CharField">1.1.1.1</field> 
     <field name="category" type="CharField">category</field> 
     <field name="description" type="CharField">enum amun set ra</field> 
     <field name="vlan" type="CharField" /> 
     <field name="designation" type="CharField">supernet</field> 
     <field name="parent" rel="ManyToOneRel" to="networks.id"></field> 
     <field name="vrf" rel="ManyToOneRel" to="vrfs.id"></field> 
    </object> 

Я попытался Null, None, пустая строка, и пространство, и Джанго будут не принимать любой из них. Вот ошибка, которую я получаю:

>python manage.py loaddata ipmanager/net 
works_fixture.xml 
Traceback (most recent call last): 
    File "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\db\models\fields\__init__.py", line 955, in to_python 
    return int(value) 
ValueError: invalid literal for int() with base 10: '' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File     "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\core\management\__init__.py", line 353, in  execute_from_command_ 
line 
    utility.execute() 
    File  "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\core\management\__init__.py", line 345, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
File  "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\core\management\base.py", line 348, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File  "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\core\management\base.py", line 399, in execute 
    output = self.handle(*args, **options) 
    File  "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\core\management\commands\loaddata.py", line 60, in handle 
    self.loaddata(fixture_labels) 
    File  "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\core\management\commands\loaddata.py", line 100, in loaddata 
    self.load_label(fixture_label) 
    File  "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\core\management\commands\loaddata.py", line 152, in load_label 
    for obj in objects: 
    File  "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\core\serializers\xml_serializer.py", line 177, in __next__ 
    return self._handle_object(node) 
    File  "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\core\serializers\xml_serializer.py", line 218, in  _handle_object 

    data[field.attname] = self._handle_fk_field_node(field_node, field) 
    File  "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\core\serializers\xml_serializer.py", line 258, in _han dle_fk_fie 
ld_node 
    return  model._meta.get_field(field.remote_field.field_name).to_python(field_ 
value) 
    File  "C:\Users\dchadwell.CORP\AppData\Local\Programs\Python\Python35\lib\site- 
packages\django\db\models\fields\__init__.py", line 960, in to_python 
    params={'value': value}, 
django.core.exceptions.ValidationError: ["'' value must be an integer."] 

Что я здесь делаю неправильно?

+0

@wim вы его получили. Спасибо. –

ответ

1

Удалить внешние ключи, которые вам не нужны, а не пытаться найти пустое значение, то есть ваш светильник блок должен выглядеть примерно так вместо того, чтобы:

<django-objects version="1.0"> 
    <object model="ipmanager.network" pk="459124212"> 
     <field name="mask" type="CharField">30</field> 
     <field name="site" type="CharField">place</field> 
     <field name="network" type="CharField">1.1.1.1</field> 
     <field name="category" type="CharField">category</field> 
     <field name="description" type="CharField">enum amun set ra</field> 
     <field name="vlan" type="CharField" /> 
     <field name="designation" type="CharField">supernet</field> 
    </object>