Как настроить поля формы адреса Оскар? - PullRequest
0 голосов
/ 06 февраля 2019

после настройки приложения (адреса) django oscar и добавления нового поля с именем 'area', когда я запускаю миграцию, он дал мне неизвестные поля (области), указанные для UserAddress

Я использовал команду ./manage.py oscar_fork_app address myappsfolder/ после создания папки и файла __init__.py в ней я начал настраивать приложение следующим образом:

#myappsfolder/address/models.py

from django.db import models
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from oscar.apps.address.abstract_models import AbstractAddress

class Address(AbstractAddress):
    area = models.CharField(_("Area"), max_length=120, 
    choices=settings.AREA_CHOICES, blank=True)

from oscar.apps.address.models import *

#myappsfolder/address/forms.py

from oscar.apps.address import forms as base_forms

class UserAddressForm(base_forms.UserAddressForm):
    class Meta(base_forms.UserAddressForm.Meta):
        fields = ['area']

Я не коснулся admin.py, config.pyи __init__.py, которые были созданы командой ./manage.py oscar_fork_app address myappsfolder/, также __init__.py, который я создал в myappsfolder, пуст, я должен добавить что-то к этим файлам?

Что я должен сделать, чтобы настроить этоприложение?или любое другое приложение?Если я отредактировал модели в oscar/apps/address/abstract_models.py, это применимо только к локальному хосту, и ошибка в формах исчезла, что означает, что django все еще читает модели из oscar/apps, а не из myappsfolder.

1 Ответ

0 голосов
/ 06 февраля 2019

Вы не можете переопределить AbstractAddress таким образом, потому что изменения не будут распространяться на другие модели, такие как UserAddress, которые непосредственно подкласс AbstractAddress.Вместо этого вам нужно переопределить конкретные модели адресов, которые вы хотите изменить.Поэтому, если вы хотите изменить UserAddress, переопределите эту конкретную модель:

from oscar.apps.address.abstract_models import AbstractUserAddress

class UserAddress(AbstractUserAddress):
    area = models.CharField(_("Area"), max_length=120, choices=settings.AREA_CHOICES, blank=True)

... после чего ваши изменения в UserAddressForm должны работать.

Если вам нужно переопределить ShippingAddress, тогда вам также придется раскошелиться на приложение shipping и сделать там то же самое, потому что именно там живет модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...