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

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

from django.db import models
from django.contrib.auth.models import User
from PIL import Image


class Address(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60, default="Miami")
    state = models.CharField(max_length=30, default="Florida")
    zipcode = models.CharField(max_length=5, default="33165")
    country = models.CharField(max_length=50)

    class Meta:
        verbose_name = 'Address'
        verbose_name_plural = 'Address'

    def __str__(self):
        return self.name

Так что мне было интересно, если это правильно.

В любом случае, мне было интересно, как с текущей моделью я могу создать представление, чтобы иметь адресформа.Использовать обычную модель было бы «легко», но как я могу сделать это, используя опцию сквозной настройки в модели?

Может ли кто-нибудь помочь мне, пожалуйста?

Спасибо

Ответы [ 3 ]

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

Вы должны объявить ForeignKey с '<app>.<model>' форматом:

class AddressType(models.Model):   
    address = models.ForeignKey('yourapp.Address', on_delete=models.CASCADE)
    profile = models.ForeignKey('yourapp.Profile', on_delete=models.CASCADE)

или напрямую указать класс:

    address = models.ForeignKey(Address, on_delete=models.CASCADE)
    profile = models.ForeignKey(Profile, on_delete=models.CASCADE)
0 голосов
/ 02 марта 2019

Оба других ответа были неверны, в итоге я все изменил, а также создал новую модель, вот она:

class Address(models.Model):
    name = models.CharField(max_length=100, blank=False)
    address1 = models.CharField("Address lines 1", max_length=128)
    address2 = models.CharField("Address lines 2", max_length=128, blank=True)
    city = models.CharField("City", max_length=64)
    # state = USStateField("State", default='FL')
    state = models.CharField("State", max_length=128, default='FL')
    zipcode = models.CharField("Zipcode", max_length=5)
    user = models.ForeignKey(Profile, on_delete=models.CASCADE, blank=False)

    class Meta:
        verbose_name_plural = 'Address'

    def __str__(self):
        return self.name
0 голосов
/ 27 февраля 2019

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

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    nick_name = models.CharField('Nick name', max_length=30, blank=True, default='')
    bio = models.TextField(max_length=500, blank=True)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')
    addresses = models.ForeignKey(Address) # <-- fix here

Надеюсь, это поможет!

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