Well my friend, the only reason I have to do the imports is because each
model is in it's own app. In every example I have seen the models are
usually  small and contained in one app.
Perhaps I need to redesign my project to have everything lumped together?

In my project I have an app for base, shipment, supplier, species, and
user.  Each app has its own rules of operations, meaning each has its own
css, templates etc.
I have looked at example until I am blue in the face but I cannot seem to
get past the "cannot import name 'Supplier' from partially initialized
module 'supplier.models' (most likely due to a circular import)
(/Users/frankd/django" error.

I'm not sure what the "partially initialized" is telling me.

frank-


On Wed, Jan 26, 2022 at 8:13 PM bnmng <[email protected]> wrote:

> Hi,
>
> You shouldn't have to import since the models are in the same models.py
>
> On Wednesday, January 26, 2022 at 2:26:13 PM UTC-5 [email protected]
> wrote:
>
>> After trying the suggestions I get these errors.
>>
>> supplier.models:
>>
>> class Supplier(models.Model):
>>
>>     name = models.CharField(max_length=50)
>>
>>     phone = models.CharField(max_length=15, null=True, blank=True)
>>
>>     email = models.CharField(max_length=120, null=True, blank=True)
>>
>>     country = models.CharField(max_length=120, null=True, blank=True)
>>
>>     address = models.CharField(max_length=120, null=True, blank=True)
>>
>>     city = models.CharField(max_length=120, null=True, blank=True)
>>
>>     state = models.CharField(max_length=120, null=True, blank=True)
>>
>>     zipCode = models.CharField(max_length=10, null=True, blank=True)
>>
>>
>>     def __str__(self):
>>
>>         return self.name
>>
>>
>> shipment.models:
>>
>> ----------------
>>
>>
>> from django.db import models
>>
>>
>> from specie.models import Specie
>>
>> from supplier.models import Supplier
>>
>>
>> # Create your models here.
>>
>>
>>
>> class Shipment(models.Model):
>>
>>     created = models.DateTimeField()
>>
>>     specie = models.ManyToManyField(Specie)
>>
>>     label = models.CharField(max_length=10)
>>
>>     received = models.PositiveIntegerField()
>>
>>     bad = models.PositiveIntegerField(default=0)
>>
>>     non = models.PositiveIntegerField(default=0)
>>
>>     doa = models.PositiveIntegerField(default=0)
>>
>>     para = models.PositiveIntegerField(default=0)
>>
>>     released = models.PositiveIntegerField(default=0)
>>
>>     entered = models.BooleanField(default=False)
>>
>>     supplier = models.ForeignKey(Supplier, on_delete=models.DO_NOTHING)
>>
>>
>>     def __str__(self):
>>
>>         return self.supplier
>>
>>
>>     class Meta:
>>
>>         ordering = ["label"]
>>
>>
>>     def __str__(self):
>>
>>         return self.label
>>
>>
>> # =================================#
>>
>> When I add the line supplier = models.ForeignKey(Supplier,
>> on_delete=models.DO_NOTHING)
>>
>> I get this error:
>>
>>
>> File "/Users/frankd/django_projects/Insectarium/src/shipment/models.py",
>> line 4, in <module>
>>
>>     from supplier.models import Supplier
>>
>>   File
>> "/Users/frankd/django_projects/Insectarium/src/supplier/models.py", line 3,
>> in <module>
>>
>>     from shipment.models import Shipment
>>
>> ImportError: cannot import name 'Shipment' from partially initialized
>> module 'shipment.models' (most likely due to a circular import)
>> (/Users/frankd/django_
>>
>>
>>
>> specie.models:
>>
>> --------------
>>
>> from django.db import models
>>
>> from django.utils import timezone
>>
>> from ckeditor.fields import RichTextField
>>
>>
>> from shipment.models import Shipment
>>
>>
>> # Create your models here.
>>
>>
>>
>> class Specie(models.Model):
>>
>>     scientific_name = models.CharField(max_length=50)
>>
>>     common_name = models.CharField(max_length=50, blank=True, null=True)
>>
>>     description = RichTextField(blank=True, null=True)
>>
>>     image = models.ImageField(
>>
>>         upload_to="specie/images/species", default="no_picture.png"
>>
>>     )
>>
>>     shipment = models.ManyToManyField(Shipment)
>>
>>     created = models.DateField(default=timezone.now)
>>
>>
>>     def __str__(self):
>>
>>         return self.scientific_name
>>
>>
>>     class Meta:
>>
>>         ordering = [
>>
>>             "scientific_name",
>>
>>         ]
>>
>>
>>     def __str__(self):
>>
>>         return self.scientific_name
>>
>>
>> # ====================== #
>>
>> when I add the line shipment = models.ManyToManyField(Shipment)
>>
>> I get this error.
>>
>>
>> File "<frozen importlib._bootstrap>", line 241, in
>> _call_with_frames_removed
>>
>>   File
>> "/Users/frankd/django_projects/Insectarium/src/shipment/models.py", line 3,
>> in <module>
>>
>>     from specie.models import Specie
>>
>>   File "/Users/frankd/django_projects/Insectarium/src/specie/models.py",
>> line 5, in <module>
>>
>>     from shipment.models import Shipment
>>
>> ImportError: cannot import name 'Shipment' from partially initialized
>> module 'shipment.models' (most likely due to a circular import)
>> (/Users/frankd/django_
>>
>>
>>
>> I think I tried this before but couldn't resolve these errors. Any
>> suggestions would be appreciated.
>>
>>
>> frank-
>>
>>
>> On Wed, Jan 26, 2022 at 10:53 AM frank dilorenzo <[email protected]>
>> wrote:
>>
>>> Thank you so much.  Have a great day!
>>>
>>> frank-
>>>
>>>
>>> On Wed, Jan 26, 2022 at 6:51 AM bnmng <[email protected]> wrote:
>>>
>>>> I would start by defining Supplier in your models.py, then Shipment
>>>> with a ForeignKey reference to Supplier
>>>>
>>>> I'm assuming (forgive me if I'm wrong) that not only can a shipment
>>>> have many species, but a species can be in many shipments, so if that's the
>>>> case, the most obvious way is to go with ManyToMany for that relationship
>>>>
>>>> https://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_many/
>>>>
>>>> class Supplier(models.Model):
>>>>     (etc..etc..)
>>>>
>>>> class Shipment(models.Model):
>>>>     supplier = models.ForeignKey(
>>>>         Supplier,
>>>>         on_delete=models. (...etc.. etc...)
>>>>
>>>> class Species(models.Model):
>>>>     shipment = models.ManyToManyField(
>>>>         Shipment,
>>>>         (etc..)
>>>> On Monday, January 24, 2022 at 8:59:10 AM UTC-5 [email protected]
>>>> wrote:
>>>>
>>>>> I have tried several different ways but I cannot seem to get this
>>>>> right.  What I have is a list
>>>>> of suppliers.  Each supplier can have many shipments and each shipment
>>>>> can have many species.  Seems simple enough but apparently I must be more
>>>>> simple.
>>>>>
>>>>> I need a suggestion of how to relate these table.
>>>>>
>>>>> a supplier can have many shipment.  A shipment can have many species.
>>>>> Any help would be appreciated.  Thanks.
>>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Django users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/django-users/bc667e81-ce32-4df5-8f88-47dff3d852c8n%40googlegroups.com
>>>> <https://groups.google.com/d/msgid/django-users/bc667e81-ce32-4df5-8f88-47dff3d852c8n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/8f41caba-62f3-45e8-b4d6-e9584f9e8068n%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/8f41caba-62f3-45e8-b4d6-e9584f9e8068n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAJbiy1BgLQ%3Dbsd1k6KntKvN_dsxK2-Q2M8h2uWBY3TWPO_-V1Q%40mail.gmail.com.

Reply via email to